A computer network is a collection of interconnected computing devices that exchange data and share resources. In a packet-based network the computing devices communicate data by dividing the data into small blocks called packets. Certain devices within the network, such as routers, maintain routing information that describes routes through the network. In this way, the packets may be individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Virtual private networks (VPNs) are often used to securely share data over a public network, such as the Internet. For example, an enterprise that includes multiple geographically separated sites, each site including one or more computing devices, may establish a VPN to allow the computing devices to securely communicate through the Internet or another public network. As one example, VPNs encapsulate and transport layer three (L3) communications, such as Internet Protocol (IP) packets, between the remote sites via the public network.
One form of a VPN is a “BGP/MPLS IP VPN.” In a BGP/MPLS IP VPN, a plurality of customer sites are connected by an IP backbone network provided by a service provider. Data packets are tunneled through the backbone, so that core routers within the backbone do not need to know the VPN routes associated with the customer sites. One form of tunnel that is commonly used within the service provider backbone to carry the customer data is MPLS label switched paths (LSPs). Other tunnels that may be used to carry the customer data include IP/GRE (internet protocol/generic routing encapsulation) tunnels.
In BGP/MPLS IP VPNs, routing information for a particular VPN is maintained only by the Provider Edge routers (the PE routers”, or “PEs”) of the IP backbone that attach directly to customer sites of that VPN. That is, customer edge routers (CE routers) within the customer sites send their VPN routes to the adjacent PE routers, typically using an Interior Gateway Protocol (IGP), such as Open Shortest Path Protocol (OSPF) or an Exterior Gateway Protocol such as Exterior Border Gateway Protocol (eBGP). The service provider's PE routers then propagate the VPN routes, called VPN routing and forwarding (VRF) to PE peers through peering sessions using Interior BGP (iBGP). That is, the PE routers exchange iBGP messages through the IP backbone via peering sessions to propagate the VPN routes learned from the CE routers. In this way, core routers within the IP backbone are unaware of the VPN routes for the various VPNs that make use of the backbone network. Further details of BGP/MPLS IP VPNs are described in Request for Comment (RFC) 4364, “BGP/MPLS IP Virtual Private Networks (VPNs),” Internet Engineering Task Force, February 2006, the entire contents of which are incorporated herein by reference.
In some cases, a VPN may be configured to carry L3 multicast traffic, such as Internet Protocol Television (IPTV), desktop conferences, corporate broadcasts, music and video web casts, and other forms of multimedia content. If a particular BGP/MPLS IP VPN is transmitting “native” multicast traffic over the backbone, it is referred to as a Multicast VPNs (MVPNs). “Native” multicast traffic typically refers to packets that a CE sends to a PE in which the IP destination address of the packets is a multicast group address, or the packets are multicast control packets (e.g., join messages) addressed to the PE router itself, or the packets are IP multicast data packets encapsulated in MPLS. Further details of MVPNs are described in Internet Draft, DRAFT-IETF-L3VPN-2547BIS-MCAST-08, “Multicast in MPLS/BGP IP VPNs,” Internet Engineering Task Force, Mar. 5, 2009, the entire contents of which are incorporated herein by reference.
While RFC 2547 describes a model for multicast in BGP/MPLS IP VPNs, it only describes support for certain multicast routing protocols. As a result, various features of multicast routing protocols are not yet supported.